 /**
  * Future表示在将来某时获取一个值的方式，当一个返回Future的方法被调用时
  * 该方法会把要执行的某事件放入队列，并返回一个未完成的Future对象
  * 在该事件执行完毕后，Future对象的状态会自动变成已经完成，
  * 此时可以通过then链式调用或用async和await获取该事件的返回值，
  * 并对放回值进行相应的处理。
  */
  /**
   * then()方法用来注册将来完成时要调用的回调，该方法有两个参数：
   * Callback（成功返回的回调方法）:调用then()方法的对象是Future类型，
   * 该对象是一个潜藏的value（正常返回值）或者error（返回错误），
   * 如果对象成功完成，则会执行onValue这个Callback。
   * 
   * onError（失败返回的回调方法）：它是一个可选的命名Function参数，
   * 这个方法只有在Future返回失败的时候才会被执行，
   * onError也包含两个参数，第一个是Exception，第二个是可选参数StackTrace
   */
import 'dart:io';
void main(){
  String fileName = 'Unit5/text.txt';
  print('the bigin');
  /*
  readFile(fileName).then((value){
    print(value);
    print('the end!');
  },onError:(e){
    print('文件不存在或文件名有误');
  });
  */
  //print('the end!');

  String s = readFileSync(fileName);
  print(s);
  print('end');
}
Future<String> readFile(String fileName){
  File file = File(fileName);
  return file.readAsString();
} //异步读文件

String readFileSync(String fileName){
  File file = File(fileName);
  String info = file.readAsStringSync();
  return info;
}//同步读文件
